package com.service;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.BoundGeoOperations;
import org.springframework.data.redis.core.BoundZSetOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ZSetOperations;
import org.springframework.stereotype.Service;

import java.util.Set;

@Service
public class ZSetService {

    @Autowired
    private RedisTemplate redisTemplate;

    public void 学生排序() {
        BoundZSetOperations zset = redisTemplate.boundZSetOps("Chinese");
        zset.add("张三", 50);
        zset.add("李四", 80);
        zset.add("王五", 70);
        zset.add("赵六", 60);
        zset.add("陈七", 90);
        zset.add("王八", 20);
        zset.add("王九", 20);
        long  count = zset.size();
        System.out.println("个数是:"+count);

        //遍历输出，倒数前三名
        Set<String> set = zset.range(0,2);
        for (String s : set) {
            System.out.println(s);
        }
        //分数最高三人，且输出成绩
        // WithScores结果带分数
        // Range根据下标查询(下标范围)
        // 反转reverse,本来是升序，变降序
        System.out.println("--------------------------------------------------------");
         Set<ZSetOperations.TypedTuple>  setDescSort = zset.reverseRangeWithScores(0,2);
        for (ZSetOperations.TypedTuple z : setDescSort) {
            System.out.println(z.getValue()+"\t"+z.getScore());
        }

        System.out.println("-------------------------------------------------------");
        //求60--80间最高的分数
        Set<ZSetOperations.TypedTuple> setDescByScore = zset.reverseRangeByScoreWithScores(60,80);
        for (ZSetOperations.TypedTuple z : setDescByScore) {
            System.out.println(z.getValue()+"\t"+z.getScore());
        }
        //判断某个是否存在集合中,求某个人在集合中的名次，如果为NULL则不存在,从0开始
        Long minchi = zset.rank("王八");
        System.out.println(minchi);

        //删除某个元素
        //zset.removeRange(minchi,minchi);
        zset.remove("王八");
        System.out.println(zset.size());

        //redis只能设置key有过期时间






    }

}
